package com.itheima.d8_thread_pool.ZengTest;

import java.util.concurrent.*;

/**
 * @ClassName ZengThreadPoolTest4
 * @Author 16799
 * @Date 2025/9/23 20:48
 * @Version 1.0
 * @Description TODO
 *
 *  继承Thread类创建新线程的方式，试试能不能由线程池来创建新线程，毕竟Thread也是实现了Runnable接口
 *         public class Thread implements Runnable {...}
 *
 *  疑惑，为什么这里指定了Runnable或者Callable任务对象，不提继承Thread的情况，所以我要试一试
 * 参数五：workQueue：指定线程池的任务队列。 里面的任务其实是对象，这个任务对象必须是实现了Runnable或者Callable接口
 * ExecutorService的常用方法
 *          方法名称
 * void execute(Runnable command)           执行 Runnable 任务
 * Future<T> submit(Callable<T> task)       执行 Callable 任务，返回未来任务对象，用于获取线程返回的结果
 *
 * ExecutorService接口的实现类ThreadPoolExecutor创建线程池，然后调用execute方法，接收继承Thread类的任务对象的方式创建新线程
 **/
public class ZengThreadPoolTest4 {
    public static void main(String[] args) {
        ExecutorService zpool = new ThreadPoolExecutor(3,5,7,
                TimeUnit.SECONDS,new ArrayBlockingQueue<>(4), Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

        //继承Thread类创建新线程的方式，试试能不能由线程池来创建新线程，毕竟Thread也是实现了Runnable接口
        //public class Thread implements Runnable {...}
        zpool.execute(new ZengMyThread());
        zpool.execute(new ZengMyThread());

    }
}
